2019/9/3

今日工作

1. Proteus

2. 最佳实践

  • 状态管理:构建新的React组件时,应考虑其内部状态是否可能会在外部使用,应保证内部state只维护内部状态,而不要使用内部state维护外部状态

2019/9/2

今日工作

1. Proteus项目

  • fix(group-manage): 修复菜单跳转,修复用户组管理数据流,修复用户组管理员显示错误,修复select加载较慢
  • fix(group-manage&pod-list): 修复用户管理样式,修复podList加载错误

2. 笔记/最佳实践

  • 数据流:考虑路径覆盖
  • 初始化:不要留占位值,用Interface接口约束替代之
  • Antd Select组件优化:避免渲染长列表,用服务端查询或者本地预处理进行优化,控制列表长度

会议记录

  • 容器组管理:状态筛选
  • 容器组管理:保存当前命名空间
  • 路由:切换集群返回顶层页面
  • 节点列表:状态管理逻辑重构
  • 增加 全部 分类
  • 图表:bitCharts初始渲染缺陷
  • 个人中心:api key访问管理
  • 容器组管理:从容器组进入日志导致终端白屏
  • 用户管理:select下拉框1600+数据造成页面卡顿
  • 规则管理页:新建规则使用步骤条

2019/8/29

今日工作

1. Proteus

  • fix(pod-list): 修复容器组日志跳转回到首页的错误
  • feat(app-detail TaskRDSK8S-129 DONE ): 合并创建规则modal,连通user&group数据流,多处样式细节修复

2019/8/28

今日工作

1. Proteus

  • fix(multi): 进一步重构异步mount流程,保证异步数据流顺序加载,代码语义化,大幅减少渲染浪费
  • fix(helpers): 修复从项目跳转到集群的错误表现

技术分享会 - KUBERNETES

1. Linux namescpace

  • 隔离

2. Docker

  • linux容器的封装,提供简单易用的容器接口

    • 进程级别隔离
    • 资源限制
    • 应用构建
    • 一次性环境
  • 缺陷

    • 多个主机的调度
    • 缺少多实例的生命周期管理

3. Kubernetes

  • 容器编排平台

    • 集群管理
    • 扩展能力
    • 高可用性

      • 自动调度故障节点
    • 服务发现
    • 资源调度
  • Pod

    • 最小调度单元
  • 工作流(定义Pod生成模板)

    • Deployment

      • 类似于systemd
      • 怎么启动 启动多少份
    • StatefulSet
    • DaemonSet
    • Job
    • CronJob
  • Deployment

    • 适用于无状态应用
    • 生成ReplicaSet和Pod
    • 滚动升级与回滚(保证前台业务不被中断)
  • Service

    • 为外部提供统一访问入口,负载均衡
    • 用标签标识相同功能的pod

2019/8/28

今日工作

1. Proteus项目

  • feat(multi BugRDSK8S-98 DONE ): 重构整体项目,统一异步流程,加入url集群记忆,加入动态适配标题,大幅减少重绘

2019/8/26

今日工作

1. Proteus项目

  • feat(app-detail&head-bar): 用户模态框加入搜索栏,实现多选搜索,使用async重构project接口逻辑
  • feat(multi BugRDSK8S-98 IN PROGRESS ): 整体框架重构进行中,开发量远远超出预期,正在重新进行框架梳理

2019/8/24

今日工作

1. Proteus项目

  • feat(pod&app-detail): 扩展页面路由,加入cluster字段,加入用户管理模态框
  • fix(log-list&app-detail): 修复“加载更多”按钮,路由连接appDetail

2019/8/22

今日工作

1. Proteus项目

  • refactor(log-list BugRDSK8S-112 DONE ): 重构日志加载逻辑,缓存可复用,保证了数据一致性和防抖节流能力
  • fix(side-menu BugRDSK8S-69 DONE ): 主菜单折叠后,子菜单可以自动收起
  • feat(projects): 增加项目管理页面框架(页面组件,页面路由,菜单,接口)
  • fix(side-menu): 修复菜单折叠时仍然显示子菜单的Bug
  • feat(side-menu): 切换submenu时自动更新header

2019/8/21

今日工作

1. Proteus项目

  • feat(node/list TaskRDSK8S-109 DONE ): 表单校验限定字段范围并对错误进行拦截
  • feat(node/list TaskRDSK8S-110 DONE ): 统一批量处理以及规范数据格式,抛弃废除的节点交互接口,多处样式与细节修复,移除不需要的console.log
  • feat(node/list BugRDSK8S-108 DONE ): 增加PopConfirm拦截,防止表单不合规时仍然提交成功的情况

会议记录

1. Proteus项目

  • 概要设计:告警订阅、用户组管理、项目管理整体结构
  • 交互逻辑:一二级菜单的位置分布,不同状态下的显示切换,用户管理模态框模式,添加规则输入模式

2019/8/20

今日工作

1. 知识构建

  • 初步熟悉Redux和Rematch
  • 理解TypeScript的类型声明,泛型,类型映射,接口,类等概念
  • 熟悉React的State生命周期,掌握React列表渲染,状态提升

2. Proteus项目

  • fix(multi): LogList组件 - 内部统一引用rootState状态,clusterNode接口 - 重写真·分页加载接口,修复了不必要的console.log等细节
  • feat(models): clusterNode接口 - 优化变量传递
  • feat(node-detail): 修复节点详情列表未初始化的问题,增加节流锁,去除遗留的console.log

明日计划

  • 进一步组件化
  • 继续学习React和TypeScript

2019/8/19

今日工作

1. Proteus项目

  • fix(index&nodes): 合并css样式
  • feat(clusterList BugRDSK8S-94 DONE ): innerCard组件化,增加可选链接参数
  • feat(logList): 日志列表完全解耦为组件,可独立传入logList数据、getLogList方法、pagination源、match属性
  • fix(nodeList BugRDSK8S-104 DONE ): 修复asyncCordon, asyncUnCordon等十个接口,方法映射关系全部改正,models/clusterNode对应参数和对应回调payload全部改正,所有回调await化,使用rootState.pagination对接实时分页数据

会议记录

1. Proteus晨会

  • 功能点 - 告警订阅
  • 功能点 - 用户/用户组搜索-模糊匹配 组的筛选
  • Roadmap - 先做用户库
  • 问 - 有没有接口文档√(上午已出)
  • 工作 - 先做逻辑结构
  • 后端 - 数据结构 约束规则
  • 前端需求/文档 - 暂无,周三给

BUG记录

1. arcanist在npm run dev下文件缺失

问题描述:arc diff通过后使用arc land提交出现文件缺失

复现步骤:

1. 修改部分文件
2. 执行arc diff
3. leader同意commit
4. arc land

预期结果:

成功land

实际结果:

land失败,本地文件被删掉

排查原因:

李峰:

本地文件被删掉的情况之前熙博和若天也碰到好几次(Windows系统才出现),

查出来如果npm run dev正在编译的时候执行fetch rebase或者git merge之类的操作会容易出现这种情况,似乎编译时会动本地原有文件,

比较安全的方法是编译结束Compiled successfully状态的时候再执行 arc diff 或 arc land

明日计划

  • 继续完善接口修复
  • 继续实现组件化

2019/8/16

今日工作

1. 知识构建

  • 基本掌握React生命周期
  • 基本掌握Antd各种组件

2. Proteus项目

  • fix(list TaskRDSK8S-72 DONE ): 页面根据状态动态显示停止调度-恢复调度
  • refactor(list): 重构数据流,用state统一管理所有变化量,避免重复数据处理,实现修改pageSize或搜索条件时回到第一页
  • fix(list): 减小table行高,封装getClusterEvents接口,组件内部统一调用
  • style(list&pod TaskRDSK8S-74 DONE ): 统一减小table行高,规范button样式与间隔,表格行交替颜色显示,用颜色区分button功能
  • fix(nodes&pods&events&index BugRDSK8S-93 DONE ): 修复所有样式层级错误,封装多个css类,调整“加载更多”按钮位置
  • 在JIRA上提交issue(解决2/2)

    • BugRDSK8S-95 DONE [UI] 集群事件页 - 切换搜索条件时页数没有重置
    • BugRDSK8S-96 DONE [UI] 分页器加入快速跳转功能

明日计划

  • 休息
  • 熟悉React组件通信原理
  • 研究Bizchart的内部逻辑,寻求二次开发的可能性

2019/8/15

今日工作

1. 知识构建

  • 成功从Vue转移至React技术栈,基本熟悉JSX,Render(),props等概念与用法
  • 阅读了大量React文档,基本熟悉React项目结构
  • 阅读Antd文档,基本掌握Antd组件库
  • 初步理解k8s的cluster, pods, node

2. Proteus项目

  • 与世垚哥交流想法,阅读JIRA中的issue并逐一修复中,同时提出自己的issue

    • issue1:首页未登录时弹出toast一秒就跳转,浪费渲染性能,建议跳过渲染或者弹出toast
    • issue2:sideMenu切换压缩状态时文字显示错位
  • format(list):import换用缩写,表头中文化,代码格式化,去除无意义赋值;
  • style(index):增加首页chart显示区域,修正divider粗细不一问题
  • fix(events):修复event表头未汉化的英文; 增强moment方法语义化;添加RangePicker默认时间;保持面板显示时间范围

明日计划

  • 继续阅读React文档,掌握React基本语法
  • 熟悉React组件结构与方法
  • 熟悉React生命周期
  • 进一步熟悉React项目结构
  • 继续阅读Antd文档,分析Antd React组件原理
  • 进一步熟悉docker与k8s原理和结构
  • 进一步熟悉Proteus项目架构

2019/8/14

今日工作

1. 入职

  • 配置环境:

    • Webstorm(GitToolBox)
    • Vscode(ESLint + GitLen)
    • Git + SSH
    • npm
  • 接入Code Review

    • Phabricator
    • Arcanist
  • 使用LDAP账号登录Gitlab
  • Clone项目,本地构建,研究项目架构
  • 熟悉这张电动桌子

会议记录

1. 从数据流角度看前后的服务

兰天鹏 – 后端框架组

  • IP首部

    • 生存时间 – TTL – 转发跳数
    • 源地址(IP)
    • 目的地址(IP)
  • TCP状态机

    • TIME-WAIT等待
    • SYN-RCVD等待
  • HTTP 2.0

    • Header压缩(Gzip + Cache header field)
    • 服务器推送(替代WebSocket - 个人认为不可行)

关于会议内容的想法:

第一个也是最常被忽视的问题是HTTP/2 Push是不可执行的,可能被忽略由代理,路由器,其他中介,甚至浏览器。

即(来自HTTP/2草案):

中介可以接收来自服务器的推送,并选择不将其转发到客户端。换句话说,如何利用推送信息取决于中介。同样,中介可能选择对客户机进行额外的推送,而不需要服务器采取任何操作。

另外,HTTP/2连接会在一段时间后关闭。

的确,标准规定:

http/2连接是持久的。为了获得最佳性能,预计客户端将不会关闭连接,直到确定不需要与服务器进一步通信(例如,当用户导航离开特定网页时)或直到服务器关闭连接为止。

但是

鼓励服务器尽可能长时间保持开放连接。但允许终止空闲连接。必要的话。当任一端点选择关闭传输层tcp连接时,终止端点应首先发送一个GOAWAY(节6.8)帧,以便两个端点能够可靠地确定以前发送的帧是否已被处理并优雅地完成或终止任何必要的剩余任务。

即使相同的连接允许在打开时推送内容,即使HTTP/2解决了HTTP/1.1的“保持活动”所带来的一些性能问题...HTTP/2连接也不会无限期地保持打开。

网页一旦关闭,也不能重新启动HTTP/2连接(除非我们又回到了长时间拉扯,也就是说)。

HTTP/2的实现表明多个浏览器选项卡/窗口共享一个HTTP/2连接,这意味着push将永远不知道它属于哪个选项卡/窗口,从而消除了push作为WebSocket的替代品。

明日计划

  • 从Vue转移至React技术栈
  • 从JS扩展至TS
  • 阅读React文档

杨珏成
64 声望8 粉丝

You're breathtaking.